# -*- coding: utf-8 -*-
# @Time    : 2022/10/25 17:15
# @Author  : 限量老
import random
from PIL import Image, ImageDraw,ImageFont,ImageFilter


def check_code(width=120,height=30,char_length=5,font_file="app01/utils/Monaco.TTF",font_size=28):
    #创建画笔,用于在图片上画任意内容:
    code=[]
    img=Image.new(mode='RGB',size=(width,height),color=(255,255,255))#创建图片
    draw=ImageDraw.Draw(img,mode='RGB')

    def rndChar():
        '''
        生成随机字母
        :return:
        '''
        return chr(random.randint(65,90))#大写65-90,小写97-122
        #return str(random.randint(0,9))#数字

    def rndColor():
        '''
        生成随机颜色
        :return:
        '''
        return (random.randint(0,255),random.randint(10,255),random.randint(64,255))

    #写文字
    font=ImageFont.truetype(font_file,font_size)
    for i in range(char_length):
        char=rndChar()
        code.append(char)
        h=random.randint(0,4)
        draw.text([i*width/char_length,h-5],char,font=font,fill=rndColor())

    #写干扰点
    for i in range(40):
        draw.point([random.randint(0,width),random.randint(0,height)],fill=rndColor())

    #写干扰圈圈
    for i in range(40):
        draw.point([random.randint(0,width),random.randint(0,height)],fill=rndColor())
        x=random.randint(0,width)
        y=random.randint(0,height)
        draw.arc((x,y,x+4,y+4),0,90,fill=rndColor())

    #画干扰线
    for i in range(5):
        x1=random.randint(0,width)
        y1=random.randint(0,height)
        x2=random.randint(0,width)
        y2=random.randint(0,height)

        draw.line((x1,y1,x2,y2),fill=rndColor())

    img=img.filter(ImageFilter.EDGE_ENHANCE_MORE)
    return img, "".join(code)



#
# if __name__ == '__main__':
#     img,code_str=check_code()
#
#     with open('code.png','wb') as f:
#         img.save(f,format='png')
#     print(code_str)



















